package edu.support.base.controller;


import edu.domain.User;
import edu.support.context.Constant;
import edu.support.util.ParamUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

/**
 * 基础控制器
 *
 * @date 19:32
 */
@Controller
public abstract class AdminBaseController extends BaseController {


    /**
     * 刷新页面
     *
     * @return
     */
    protected String refresh() {
        return "redirect:" + request.getHeader("Referer");
    }

    /**
     * 重定向
     *
     * @param viewName 重定向地址
     * @return
     */
    protected String redirect(String viewName) {
        return "redirect:" + viewName;
    }


    /**
     * 登录的管理员
     *
     * @return
     */
    protected User loginAdmin() {
        Object user = session.getAttribute(Constant.SESSION_ADMIN);
        return (User) user;
    }

    /**
     * 登录的管理员ID
     *
     * @return
     */
    protected Long loginAdminId() {
        return (Long) session.getAttribute("sessionAdminId");
    }


    /**
     * 将数据放在model里面
     *
     * @param model
     * @param attributes
     */
    protected void setModelAttribute(Model model, Object... attributes) {
        if (attributes != null && attributes.length > 0) {
            for (Object object : attributes) {
                if (null != object) {
                    model.addAttribute(object);
                }
            }
        }
        model.addAttribute("requestUrl", request.getRequestURI() + "?" + ParamUtils.params2String(request));
    }


    /**
     * 重定向并提示
     * rest模式不能使用
     *
     * @param viewName 重定向地址
     * @param message  重定向提示
     * @return
     */
    protected String redirect(String viewName, String message, RedirectAttributes attributes) {
        attributes.addFlashAttribute("message", message);
        return "redirect:" + viewName;
    }

    /**
     * 刷新并提示
     * rest模式不能使用
     *
     * @param message 提示消息
     * @return
     */
    protected String refresh(String message, RedirectAttributes attributes) {
        attributes.addFlashAttribute("message", message);
        return "redirect:" + request.getHeader("Referer");
    }

}
